/* 
 * File:   Cliente.cpp
 * Author: thiagojesus
 * 
 * Created on May 23, 2012, 8:38 AM
 */

#include "Cliente.h"
#include "Lista.cpp"
#include <iostream>
#include <fstream>

Cliente::Cliente(){
    nome = "";
    cpf = 0;
}

Paciente::Listapac Cliente::getPaciente() const {
    return paciente;
}

void Cliente::setNpac(int npac) {
    this->npac = npac;
}

int Cliente::getNpac() const {
    return npac;
}

Cliente::Cliente(std::string _nome, double _cpf, Paciente::Listapac _Listapac, int _npac) {
    nome = _nome;
    cpf = _cpf;
    paciente = _Listapac;
    npac = _npac;
}

Cliente::Cliente(const Cliente& orig) {
    nome = orig.nome;
    cpf = orig.cpf;
}

Cliente::~Cliente() {
    
}

Cliente& Cliente::operator =(const Cliente& a){
    this->nome = a.nome;
    this->cpf = a.cpf;
    return *this;
}

void Cliente::imprimirLista(Lista *p_l){    
    Cliente *aux;
	aux = *p_l;
        if(aux == NULL){
            std::cout<<"Lista vazia";
        }else{
            while (aux != NULL){
                std::cout<<"nome: "<<aux->nome<<"\n"<<"cpf: "<<aux->cpf<<"\n";
                Paciente::imprimirListapac(&(aux->paciente));
		aux = aux->prox;
            }
        }
		
}

Cliente* Cliente::pesquisar(Lista* p_l, std::string n){
    Cliente *aux;
    aux = *p_l;
    while(aux != NULL){
        if(aux->nome==n){
            return aux;
        }else{
            aux = aux->prox;
        }
    }
    return NULL;
}

void Cliente::salvar(Lista* p_l, int ncli){
    std::fstream myfile;
    Cliente *aux;
    int i;
    aux = *p_l;
    myfile.open("cliente.bin",std::ios::out|std::ios::binary|std::ios::trunc);
    if(!myfile){
        std::cout<<"ERRO!";
    }else{
        myfile<<ncli<<"\n";
        for(i=0;i<ncli;i++){
            myfile<<aux->nome<<"\n"<<aux->cpf<<"\n"<<aux->npac<<"\n";
            Paciente::salvar(&(aux->paciente), aux->npac);
            aux = aux->prox;
        }
        std::cout<<"arquivo criado com sucesso\n";
        myfile.close();
    }
    
}

int Cliente::carregar(Lista* cli){
    std::fstream myfile;
    int ncli = 0, i;
    long local=0, parou=0, pacart;
    myfile.open("cliente.bin",std::ios::in|std::ios::binary);
    if(!myfile){
        std::cout<<"ERRO!";
        return 0;
    }else{
        myfile>>ncli;
        for(i=0;i<ncli;i++){
            Cliente *aux = new Cliente();
            getline(myfile,aux->nome);
            getline(myfile,aux->nome);
            myfile>>aux->cpf>>aux->npac;
            parou = local;
            local = Paciente::carregar(&(aux->paciente),(aux->npac),parou, &pacart);
            cadastrar(cli,aux);
            }
        //std::cout<<"dados carregados\n";   
            //imprimirLista(cli);
        
    }
    
    myfile.close();
    if(remove("cliente.bin")!=0){
        perror("ERRO!");
    }
    
    myfile.close();
    if(remove("paciente.bin") !=0){
       perror("ERRO!"); 
    }
    
    myfile.close();
    if(remove("carteira.txt")!=0){
        perror("ERRO!");
    }
    
    myfile.close();
    if(remove("itemcarteira.txt") !=0){
       perror("ERRO!"); 
    }
    
    return ncli;
    
}

double Cliente::getCpf() const {
    return cpf;
}









